\section{Project Goal}

\subsection{Basic Idea}
The basic idea of our project is to evaluate different distributed clock synchronization algorithms over an 
asynchronous bus communication. Therefore we are going to implement a CSMA/CA protocol providing basic fault 
tolerance methods and an easy way to estimate message round trip time and message priority.
Upon the protocol, detailed described in \cite[NESD2]{NESD2}, we settle the algorithms for the clock synchronization.\\

The basic idea of our project is to evaluate different distributed clock synchronization algorithms over an 
asynchronous bus communication. Therefore we are going to implement a CSMA/CA protocol providing basic fault 
tolerance and and message priorities. Besides it should be easy to estimate the message round trip time.
Upon the protocol, described in \cite[NESD2]{NESD2} in detail, we settle the algorithms for the clock synchronization.\\

Each node has divers hardware such as buttons, LEDs, a bulb, a LCD and other peripheral components. 
We want to display drift rates of clocks on the LCD, trigger faults in the nodes internal clock and  
cause bus overloads with the connected buttons.\\

The outcome of this project should be bus protocol, which can be used by hobbyists and semi-professionals. 
We hope to gain more experience in the field of asynchronous real time bus engineering and 
to be able to estimate influences of overloads and faults to applications upon them.
We try to give a link between theoretical and practical aspects and how they relate.


\subsection{Requirements}
The requirements outlined below are an abstract view, valid for the global project idea.

\paragraph{Bus Protocol}
\begin{req}
\label{req:ulftrtp:analyzeable}
\textbf{Analyzable}: The protocol has to be easy to analyze with respect to worst case timing.
\end{req}

\begin{req}
\label{req:ulftrtp:interfacing}
\textbf{Interfacing}: The protocol design has to strictly follow interface guidelines. This means:
\begin{enumerate}
 \item Lower levels of the protocol can only be accessed by higher levels through defined layer interfaces.
 \item Higher levels of the protocol cannot be accessed by lower levels. Data can only be propagated to higher layers using callback mechanisms. 
\end{enumerate}
\end{req}

\begin{req}
\label{req:ulftrtp:easy migration}
\textbf{Migration}: The protocol has to be migratable for arbitrary applications with minimal effort.
\end{req}

\begin{req}
\label{req:ulftrtp:resource consumption}
\textbf{Resource consumption}: The protocol has to be adaptable to minimal hardware constraints.
\end{req}


\paragraph{Clock Synchronization}
\begin{req}
\label{req:clock:analyzeable}
\textbf{Analyzable}: The clock synchronization has to be easy to analyze.
\end{req}

\begin{req}
\label{req:clock:exchangeable}
\textbf{Exchangeable}: The specific clock synchronization algorithms have to be easily interchangeable with other 
clock synchronization algorithms, as we want to try out different algorithms. This Requirement correlates with 
Requirement \ref{req:ulftrtp:interfacing}.
\end{req}
